﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using CapturarObjetos.Nucleo;
using CapturarObjetos.Objetos;

namespace CapturarObjetos.Fases
{
    class Aleatoria
    {

        #region Atributos

        //Content, usado pra dar load nos gráficos
        ContentManager Content;

        //Random
        Random rnd;

        // Objetos do cenário.
        ObjetoJogo chao, energia, objeto, cilindro, cubo, piramide, jogador;
        /// <summary>
        /// Lista de todos os objetos do game
        /// </summary>
        public List<ObjetoJogo> objetos = new List<ObjetoJogo>();


        // Cameras utilizadas
        Camera camera;

        #endregion



        #region Metodos

        /// <summary>
        /// Construtora
        /// </summary>
        /// <param name="camera"> Camera principal utilizada</param>
        public Aleatoria(ContentManager content, Camera camera)
        {
            this.Content = content;
            this.camera = camera;

            //Chão, base do cenário
            chao = new ObjetoJogo();
            chao.Modelo = Content.Load<Model>("chao");
            objetos.Add(chao);

            // Jogador
            jogador = new Jogador(Content, "coisa");
            jogador.Escala = 0.1f;
            objetos.Add(jogador);

            #region objetos_na_tela

            //Cilindros
            for (int i = 1; i < 6; i++)
            {
                cilindro = new Barreira(Content, "cilindro", false);
                cilindro.Escala = 0.1f;
                objetos.Add(cilindro);
            }

            //Cubos
            for (int i = 1; i < 4; i++)
            {
                cubo = new Barreira(Content, "cubo", false);
                cubo.Escala = 0.1f;
                objetos.Add(cubo);
            }

            //Piramides
            for (int i = 1; i < 4; i++)
            {
                piramide = new Barreira(Content, "piramide", false);
                piramide.Escala = 0.1f;
                objetos.Add(piramide);
            }


            //Energias
            for (int i = 1; i < 12; i++)
            {
                ObjetoJogo energia = new Energia(Content, "objeto", false);
                energia.Escala = 0.05f;
                objetos.Add(energia);
            }

            #endregion




        }


        /// <summary>
        /// Método para desenhar a fase
        /// </summary>
        /// <param name="camera"> Camera utilizada </param>
        public void Desenhar(Camera camera)
        {
            // For que percorre todos os objetos do jogo para desenha-los
            for (int i = 0; i < objetos.Count; i++)
            {
                objetos[i].Desenhar(camera);
            }
        }

        #endregion


    }
}
